| автор перевода - Штрек - flash-club.ru | Предыдущая | Следующая | Оглавление |
Flash Player 6.
super.method([arg1, ...,argN]) super([arg1, ...,argN])
method Метод, вызываемый в суперклассе.
arg1 Дополнительные параметры, которые передаются
методу суперкласса (синтаксис 1) или к функции конструктора суперкласса (синтаксис
2).
Обе формы вызывают функцию. Функция может возвращать любое значение.
Оператор: первый стиль синтаксиса может использоваться в пределах тела объектного
метода для вызова метода суперкласса и может произвольно передавать параметры
(arg1 ... argN) методу суперкласса.
Это полезно для создания методов подкласса, которые добавляют дополнительное
поведение к методам суперкласса, но также и вызывают методы суперкласса чтобы
выполнить их первоначальное поведение.
Второй стиль синтаксиса может использоваться в пределах тела функции конструктора, чтобы вызвать функции конструктора суперкласса и может произвольно передавать параметры. Это полезно, чтобы создать подкласс, который выполняет дополнительную инициализацию, но также и вызывает конструктор суперкласса, чтобы исполнить инициализацию суперкласса.
В следующем примере, вы создаёте два класса. Вы используете ключевое слово
super в классе Socks для вызова функций в родительском классе(Clothes).
Хотя оба класса Socks и Clothes имеют метод getColor(), использование
super позводяет вам определённо ссылаться на методы и свойства
родительского класса. Создайте AS файл с именем Clothes.as, и введите следующий
код :
class Clothes {
private var color:String;
function Clothes(param_color) {
this.color = param_color;
trace("[Clothes] I am the constructor");
}
function getColor():String {
trace("[Clothes] I am getColor");
return this.color;
}
function setColor(param_color:String):Void {
this.color = param_color;
trace("[Clothes] I am setColor");
}
}
Далее создаётся класс Socks который расширяет класс Clothes, как показано в следующем примере :
class Socks extends Clothes {
private var color:String;
function Socks(param_color:String) {
this.color = param_color;
trace("[Socks] I am the constructor");
}
function getColor():String {
trace("[Socks] I am getColor");
return super.getColor();
}
function setColor(param_color:String):Void {
this.color = param_color;
trace("[Socks] I am setColor");
}
}
Создайте новый AS или FLA файл и введите следующий ActionScript код :
import Socks;
var mySock:Socks = new Socks("maroon");
trace(" -> "+mySock.getColor());
mySock.setColor("Orange");
trace(" -> "+mySock.getColor());
Следующий результат выведется в панели Output :
[Clothes] I am the constructor [Socks] I am the constructor [Socks] I am getColor [Clothes] I am getColor -> maroon [Socks] I am setColor [Socks] I am getColor [Clothes] I am getColor -> Orange
Если вы забыли поместить ключевое слово super в метод getColor()
класса Sock, и при вызове метода getColor() метод будет вызывать
сам себя многократно, что преведёт к сбою работы кода из за возникающего бесконечного
цикла.
Output панель выведет следующую ошибку если не использовать super :
[Socks] I am getColor [Socks] I am getColor ... [Socks] I am getColor 256 levels of recursion were exceeded in one action list. This is probably an infinite loop. Further execution of actions has been disabled in this movie.
| Посмотреть комментарии LiveDocs | Предыдущая | Следующая | Оглавление | |